home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / biz / swood / FWTabTools.lha / FWTabTools / FWTableEdit.rexx < prev    next >
OS/2 REXX Batch file  |  1999-02-14  |  6KB  |  303 lines

  1. /* $VER: 0.12, (04.01.1998), © by Thorsten Willert
  2.    
  3.    Macro um Tabellen zu editieren (CUT, COPY,
  4.    PASTE)
  5. ------------------------------------------------*/
  6.  
  7. ADDRESS = 'FinaW'
  8. OPTIONS CACHE RESULTS
  9.  
  10. STATUS PORTNAME
  11. FW = RESULT
  12. ADDRESS = FW
  13.  
  14. SIGNAL ON BREAK_C
  15. SIGNAL ON HALT
  16. SIGNAL ON SYNTAX
  17.  
  18. /*-----------------------------------------------*/
  19.  
  20. RT.Version   = "Version 0.12"
  21. RT.Title     = "FWTableEdit"
  22. RT.Para1     = "rt_pubscrname = FinalWriterPubScreen rt_topoffset = 50 rt_reqpos = reqpos_topleftwin"
  23. RT.Copyright = "© 1997-98, by Thorsten Willert"
  24.  
  25. R = '0A'X
  26.  
  27. /*-----------------------------------------------*/
  28.  
  29. IF ~show('L',"rexxreqtools.library") THEN DO
  30.    IF ~addlib('rexxreqtools.library',0,-30,0) THEN DO
  31.       'ShowMessage 1 1 "Error ..." "Missing rexxreqtools.library!" "" "Exit !!" "" ""'
  32.       EXIT 20
  33.    END
  34. END
  35.  
  36. DO FOREVER
  37.  
  38.     OldRes = res
  39.     
  40.     Func = Info("_Copy|_Cut|_Paste|_Exit")
  41.  
  42.     IF GetCursor() = 1 THEN
  43.     DO
  44.      
  45.         IF Func = 0 THEN LEAVE
  46.         ELSE IF Func = 3 THEN res = OldRes
  47.         ELSE res = RowCol()
  48.      
  49.         SELECT
  50.             WHEN Func = 1 THEN CALL TABCOPY( res )
  51.             WHEN Func = 2 THEN CALL TABCUT( res )
  52.             WHEN Func = 3 THEN CALL TABPASTE( res )
  53.             OTHERWISE LEAVE
  54.         END
  55.     END
  56.  
  57. END
  58.  
  59. /*-----------------------------------------------*/
  60.  
  61. Ende:
  62. EXIT
  63.  
  64. /*-----------------------------------------------*/
  65.  
  66. GetCursor:
  67.  
  68. RESULT= ""
  69.  
  70. ADDRESS(FW)
  71. TableGetActiveCell
  72. PARSE VAR RESULT Zeile Spalte
  73.  
  74. OldZeile = Zeile
  75. OldSpalte = Spalte
  76.  
  77. IF Zeile = "" | Spalte = "" THEN /* Geht nicht über GetObjektType */
  78.     DO
  79.         CALL KeineTabelle
  80.         RETURN 0
  81.     END
  82.  
  83. TableGetRows
  84. PARSE VAR RESULT Muell Zeilen
  85.  
  86. TableGetColumns
  87. PARSE VAR RESULT Muell Spalten
  88.  
  89. RETURN 1
  90.  
  91. /*-----------------------------------------------*/
  92.  
  93. TabCut:
  94. PARSE ARG Func
  95.  
  96. DROP Zelle.
  97.  
  98. TableGetColumnWidth Spalte
  99. SpaltenWeite = RESULT
  100.  
  101. I = 0
  102.  
  103. IF Func = 1 THEN
  104.     DO
  105.         TableSetActiveCell Zeile 1
  106.         
  107.         DO I = 1 TO Spalten
  108.              TableSetActiveCell Zeile I
  109.              CALL GetInhalt
  110.         END
  111.         
  112.         TableDeleteRows Zeile 1 FORCE
  113.     END
  114. ELSE IF Func = 0 THEN
  115.     DO
  116.         TableSetActiveCell  1 Spalte
  117.         
  118.         DO I = 1 TO Zeilen
  119.              TableSetActiveCell I Spalte
  120.              CALL GetInhalt
  121.         END
  122.         TableDeleteColumns Spalte 1 FORCE
  123.     END
  124.     
  125. REDRAW
  126.     
  127. Cut = 1
  128.  
  129. RETURN
  130.  
  131. /*-----------------------------------------------*/
  132.  
  133. TabCopy:
  134.  
  135. PARSE ARG Func
  136.  
  137. DROP Zelle.
  138.  
  139.  
  140. I = 0
  141.  
  142. TableGetColumnWidth Spalte
  143. SpaltenWeite = RESULT
  144.  
  145. IF Func = 1 THEN
  146.     DO
  147.         TableSetActiveCell Zeile 1
  148.         DO I = 1 TO Spalten
  149.              TableSetActiveCell Zeile I
  150.              CALL GetInhalt
  151.         END
  152.     END
  153. ELSE IF Func = 0 THEN
  154.     DO
  155.         TableSetActiveCell  1 Spalte  
  156.         DO I = 1 TO Zeilen
  157.              TableSetActiveCell I Spalte
  158.              CALL GetInhalt
  159.         END
  160.     END
  161.     
  162. Copy = 1
  163.  
  164. RETURN
  165.  
  166. /*-----------------------------------------------*/
  167.  
  168. TabPaste:
  169. PARSE ARG Func
  170.  
  171.  
  172. IF Cut = 1 | Copy = 1 THEN
  173.     DO
  174.         IF SpaltenWeite = "SPALTENWEITE" THEN SpaltenWeite = 2
  175.         I = 0
  176.         
  177.         IF Func = 1 THEN
  178.            DO
  179.                TableInsertRows Zeile+1 1
  180.                Redraw
  181.                DO I = 1 TO Spalten
  182.                       TableSetActiveCell Zeile+1 I
  183.                       CALL SetInhalt
  184.                END
  185.            END
  186.         ELSE IF Func = 0 THEN
  187.               DO
  188.                TableInsertColumns Spalte+1 1 SpaltenWeite
  189.                ReDraw
  190.                DO I = 1 TO Zeilen
  191.                     TableSetActiveCell I Spalte+1
  192.                     CALL SetInhalt
  193.                END
  194.            END
  195.     END
  196.  
  197. RETURN
  198.  
  199. /*-----------------------------------------------*/
  200.  
  201. GetInhalt:
  202.   
  203.     RESULT = ""
  204.     STATUS FontName
  205.     Name = RESULT
  206.     
  207.     RESULT = ""
  208.     STATUS FontStyle
  209.     Style = RESULT
  210.     
  211.     SelectAll
  212.     
  213.     RESULT = ""
  214.     STATUS FontSize
  215.     Size = RESULT
  216.       
  217.     RESULT = ""
  218.     STATUS FontColor
  219.     Color = RESULT
  220.     
  221.     RESULT = ""
  222.     STATUS Justify
  223.     Justi = RESULT
  224.     
  225.     Extract
  226.     Inhalt = RESULT
  227.     INTERPRET( "Zelle."||I"='"|| Inhalt || "'" )
  228.     
  229.     INTERPRET( "Color."|| I "='"    || Color || "'" )
  230.     INTERPRET( "Name."|| I "='"     || Name || "'" )
  231.     INTERPRET( "Size."|| I "='"     || Size || "'" )
  232.     INTERPRET( "Style."|| I "='"    || Style || "'" )
  233.     INTERPRET( "Justi."|| I "='"    || Justi || "'" )
  234.  
  235.     IF Name.I = "" THEN Name.I = Name.1
  236.     IF Size.I = "" THEN Size.I = Size.1
  237.     IF Style.I = "" THEN Style.I = Style.1
  238.     
  239.     
  240. RETURN
  241.  
  242. /*-----------------------------------------------*/
  243.  
  244. SetInhalt:
  245.      
  246.     IF Name.I ~= "" THEN Font Name.I
  247.     
  248.     SelectAll
  249.     
  250.     Style Style.I
  251.     FontColor Color.I
  252.     FontSize Size.I
  253.     Justify Justi.I
  254.  
  255.     
  256.     IF Zelle.I = "Zelle."||I THEN Zelle.I = ""
  257.     Type Zelle.I
  258.  
  259.  
  260. RETURN
  261.  
  262. /*-----------------------------------------------*/
  263.  
  264. RowCol:
  265.  
  266. res = rtezrequest("Zeile oder Spalte?","_Zeile|_Spalte",RT.Title)
  267.  
  268. RETURN res
  269.  
  270. /*-----------------------------------------------*/
  271.  
  272. KeineTabelle:
  273.  
  274. rtezrequest("Zuerst eine Tabelle auswählen" || R ||,
  275.             "und Cursor positioniern!","Weiter",RT.Title)
  276.  
  277. RETURN
  278.  
  279. /*-----------------------------------------------*/
  280.  
  281. Info:
  282. PARSE ARG Taste1
  283. res = rtezrequest(RT.Version||","||R||RT.Copyright||R||R||"Tabelle Editieren:",Taste1,RT.Title,RT.Para1)
  284.             
  285. RETURN res
  286.  
  287. /*-----------------------------------------------*/
  288.  
  289. HALT:
  290. BREAK_C:
  291.  
  292. rtezrequest("Macro wurde abgebrochen ... ","_Weiter",RT.Title)
  293.  
  294. EXIT 10
  295.  
  296. /*-----------------------------------------------*/
  297.  
  298. SYNTAX:
  299.  
  300. rtezrequest("Fehler!","_Weiter",RT.Title)
  301.  
  302. EXIT 10
  303.